package com.xunchi.haichuan.user.dao;

import java.util.Date;
import java.util.List;

import com.xunchi.haichuan.user.model.User;

/**
 * 作者：kongxb<br>
 * 模块名称：用户模块<br>
 * 功能描述：用户数据存取接口<br>
 * 维护记录
 */
public interface UserDAO {

	/**
	 * 根据 id 获取用户
	 * 
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public User getByID(String id) throws Exception;

	/**
	 * 插入用户
	 * 
	 * @param entity
	 * @throws Exception
	 */
	public void saveEntity(User entity) throws Exception;

	/**
	 * 通过名字、密码获取用户
	 * 
	 * @param loginName
	 * @param loginPassword
	 * @return
	 * @throws Exception
	 */
	public User getUser(String loginName, String loginPassword) throws Exception;

	/**
	 * 通过名字、密码、类型获取用户
	 * 
	 * @param loginName
	 * @param loginPassword
	 * @param type
	 * @return
	 * @throws Exception
	 */
	public User getUser(String loginName, String loginPassword, int type) throws Exception;

	/**
	 * 按照用户登录名查找用户是否存在
	 * 
	 * @param loginName
	 * @return true 该用户存在, false 该用户不存在
	 * @throws Exception
	 */
	public boolean checkLoginName(String loginName) throws Exception;

	/**
	 * 根据所属用户ID获取用户列表
	 * 
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	public List<User> getByParentId(String parentId) throws Exception;

	/**
	 * 按用户类型获取用户列表
	 * 
	 * @param type
	 *            0：超级管理员 1：管理员 2：代理商 3：普通用户
	 * @return
	 * @throws Exception
	 */

	public List<User> getByType(int type) throws Exception;

	/**
	 * 按用户ID更改用户状态
	 * 
	 * @param usrId
	 * @param status
	 * @throws Exception
	 */
	public void changeStatus(String usrId, int status) throws Exception;

	/**
	 * 校验原密码并按用户ID更改原密码
	 * 
	 * @param usrId
	 * @param password
	 * @param oldPassword
	 * @return
	 * @throws Exception
	 */
	public int changePwd(String usrId, String password, String oldPassword) throws Exception;

	/**
	 * 按用户ID更改用户余额
	 * 
	 * @param usrId
	 * @param balance
	 * @throws Exception
	 */
	public void changeBalance(String usrId, float balance) throws Exception;

	/**
	 * 搜索用户
	 * 
	 * @param instance
	 * @param beginDate
	 * @param endDate
	 * @return
	 */
	public List<User> search(User instance, Date beginDate, Date endDate);

	/**
	 * 搜索用户
	 * 
	 * @param instance
	 * @param beginDate
	 * @param endDate
	 * @param start
	 * @param limit
	 * @return
	 */
	public List<User> search(User instance, Date beginDate, Date endDate, int start, int limit);

}
